package com.jmb.apiplatform.cores.common;

import com.alibaba.fastjson2.JSONObject;
import com.jmb.apiplatform.enumPro.RelyType;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;


public interface NodeRequest {
    /**
     * 封装链路跟踪节点对象
     * @param type 类型枚举
     * @param id 对应其数据表中存储的编号 用例对应日志表；依赖对应两张依赖表，其他为null
     * @param name 名称
     * @param value 当时的value
     * @param runTime 执行耗时
     * @param expression 提取表达式
     * @return json对象
     */
    default JSONObject chainNode(@Param("type") RelyType type, @Param("id") Integer id, @Param("name") String name, @Param("value") String value, @Param("runTime") Long runTime, @Param("expression") String expression) {

        JSONObject object = new JSONObject();
        object.put("type", type);
        object.put("typeDesc", type.getTypeStr());
        object.put("id", id);
        object.put("name", name);
        object.put("value", value);
        object.put("time", runTime);
        object.put("desc", type.getDesc());
        object.put("expression", expression);
        object.put("date", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS")));
        return object;
    }

}
